package org.example.logindemo.controller;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.example.logindemo.entity.User;
import org.example.logindemo.service.UserService;

import java.io.IOException;

/**
 *  请求转发：一种在服务器内部的资源跳转方式
 *      1.步骤：
 *          1.通过request对象获取请求转发器对象：RequestDispatcher getRequestDispatcher(String path)
 *          2.使用RequestDispatcher对象来进行转发：forward(HttpServletRequest request,ServletResponse response)
 */

@WebServlet("/register")
public class RegistServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    // 创建UserService对象
    private UserService userService = new UserService();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
         *  1.获取参数
         *  2.调用service处理
         *  3.返回结果
         */
        User myUser = new User("bdp","666");
        HttpSession session = request.getSession();
        User us = (User) session.getAttribute("user");
        System.out.println("我从session域获得："+us.toString());
        session.setAttribute("user",myUser);

        request.setCharacterEncoding("UTF-8");
        // 获取前端输入的两次密码
        String pwd1 = request.getParameter("password1");
        String pwd2 = request.getParameter("password2");

        if(pwd1!=null&&pwd1.equals(pwd2)){
            // 判断密码输入是否相同（其实这里我们可以用JavaScript在前端进行判断输入内容是否相同，如果相同在获取，这样在servlet中就不用判断了）
            // 创建user对象，将前端输入的内容存入里面
            User user = new User(request.getParameter("username"),pwd1);

            // 根据user里的内容进行注册
            int row = userService.register(user);
            System.out.println("改变的行数："+row);

            // 返回结果，产生几个注册信息row等于几，例如一个人注册row=1
            if (row > 0) {
                System.out.println("注册成功");
                //跳转注册成功界面,注册成功后，通过转发跳转到新的界面，当然也可以使用重定向，我们这里为了简单采用转发,若是想转发其他界面只要修改registerSuccess.jsp即可
                //request.getRequestDispatcher("registerSuccess.jsp").forward(request, response);
            } else {
                //跳转注册界面并提示错误信息
                System.out.println("注册失败");
                request.getRequestDispatcher("register.jsp").forward(request, response);
            }

        }else {
            // 两次输入密码不同
            System.out.println("两次密码不同或密码为空，注册失败");
            request.getRequestDispatcher("register.jsp").forward(request, response);
        }

    }
}
